/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.estoque.Clientes;

import br.com.estoque.AcessoBanco.AcessoMysql;
import java.util.List;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author note
 */
public class ClienteDAO {
    PreparedStatement pstm;
    ResultSet rs;
    String consultaCliente = "select * from clientes where NOME like ?";
    String cadastraCliete = "INSERT INTO clientes (NOME, CPF, ENDERECO, BAIRRO, CIDADE, UF, CEP, TELEFONE) "
            + "VALUES (?,?,?,?,?,?,?,?)";
    String alteraCliente = "update clientes set NOME=?, CPF=?, ENDERECO=?, BAIRRO=?, CIDADE=?, UF=?, CEP=?, TELEFONE=?"
          + "where CODIGO=?  ";
    String excluirCliente = "delete from clientes where nome like ?";
    AcessoMysql mysql = new AcessoMysql();
    
    public ClienteDAO(){}
    
    public void cadastrarCliente(Cliente cliente) throws SQLException{
        //prepara a conexão
            pstm = mysql.conectar().prepareStatement(cadastraCliete);
        //seta os valores
                pstm.setString(1, cliente.getNome());
                pstm.setString(2, cliente.getCPF());
                pstm.setString(3, cliente.getEndereco());
                pstm.setString(4, cliente.getBairro());
                pstm.setString(5, cliente.getCidade());
                pstm.setString(6, cliente.getUF());
                pstm.setString(7, cliente.getCEP());
                pstm.setString(8, cliente.getTelefone());

            //executa o codigo SQL
            pstm.execute();
            rs.close();
            pstm.close();
       
    }
      
    public List<Cliente>  listarClientes(String nome) throws SQLException{
        List<Cliente> clientes = new ArrayList<Cliente>();
       // rs = null;
        
             pstm = mysql.conectar().prepareStatement(consultaCliente);
             pstm.setString(1, nome);
             rs = pstm.executeQuery();
            
            // Cliente cliente;
             while(rs.next()){
                 Cliente cliente = new Cliente();
                 
                 cliente.setCodigo(Long.valueOf(rs.getString("codigo")));
                 //cliente.setCodigo(rs.getInt("CODIGO"));
                 cliente.setNome(rs.getString("nome"));
                 cliente.setEndereco(rs.getString("endereco"));
                 cliente.setBairro(rs.getString("bairro"));
                 cliente.setCidade(rs.getString("cidade"));
                 cliente.setUF(rs.getString("uf"));
                 cliente.setCEP(rs.getString("cep"));
                 cliente.setCPF(rs.getString("cpf"));
                 
                 clientes.add(cliente);
             }
             rs.close();
             pstm.close();
             return clientes;
    }
    
    public void alterarCliente(Cliente cliente) throws SQLException{
        //prepara a conexão
         pstm = mysql.conectar().prepareStatement(alteraCliente);
         
         //seta os valores no banco
         pstm.setString(1, cliente.getNome());
         pstm.setString(2, cliente.getCPF());
         pstm.setString(3, cliente.getEndereco());
         pstm.setString(4, cliente.getBairro());
         pstm.setString(5, cliente.getCidade());
         pstm.setString(6, cliente.getUF());
         pstm.setString(7, cliente.getCEP());
         pstm.setString(8, cliente.getTelefone());
         pstm.setLong(9, cliente.getCodigo());
         
         //executa o codigo sql
         pstm.executeUpdate();
         mysql.desconectar();
         
    }
    
    public void excluirCliente(Cliente cliente) throws SQLException{
        pstm = mysql.conectar().prepareStatement(excluirCliente);
        pstm.setString(1, cliente.getNome());
        pstm.executeUpdate();
        mysql.desconectar();
        
    }
}
